20. 重载函数
重载
现在,我们已经学习了如何创建一个类,并讨论了类所包含的一些基本函数和变量。接下来,让我们看点新的东西!
双下划线
__X__
你已经看到了一些有双下划线的函数的例子,比如:
__init__
__repr__
它们是 特殊函数 ,在 Python 中有特定的使用方式。
我们通常不会像调用
move()
和
turn_left()
一样直接调用这些函数。
相反,Python 会根据我们对关键字和运算符的使用 自动 调用这些函数。
例如,当我们创建一个新的对象时会调用
__init__
;当我们告诉 Python 输出一个特定的对象的字符串表示时会调用
__repr__
!
另一个例子:
__add__
所有这些特殊函数的名字都写在两条下划线
__
之间,这种类型的函数有很多!要查看这些函数的完整列表,请查看
Python 文档
。
例如,我们可以通过定义
__add__
函数来定义在使用 “+” 符号添加两个车辆对象时发生的情况。
def __add__(self, other):
# Create an empty list
added_state = []
# Add the states together, element-wise
for i in range(self.state):
added_value = self.state[i] + other.state[i]
added_state.append(added_value)
return added_state
上面的版本,把状态变量加在一起!或者…..你可以选择输出:添加汽车是一个无效的操作 ('adding cars is an invalid operation'),如下所示。
def __add__(self, other):
# Print an error message and return the unchanged, first state
print('Adding two cars is an invalid operation!')
return self.state
运算符重载
当我们在类中定义这些函数时,被称为 运算符重载 。
在本例中,重载表示:为一个标准运算符
赋予一个以上的意思
。
运算符重载是一个强大的工具,它不仅会在我们的课堂上不断出现,但是对于编写直观易用的类很有用。所以,当你继续学习时,请务必记住这一点。下面, 我们来练习运算符重载吧!